iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
自我挑戰組

程式小萌新的學習筆記系列 第 24

貳肆。如何設計一個模組 (元件)? - 專案開發紀實

  • 分享至 

  • xImage
  •  

今天想要分享一段自己在專案開發過程中的經驗,以及它帶給我的一些延伸思考。我覺得未來或許對這樣的議題會有不一樣的想法,把這段經驗寫下來,給其他人當作參考,也當作留給自己的紀錄。

雖然說學習軟體開發的過程中會被教導要具備模組化思考的能力,但親身進入開發環境時,發現還真不是想模組化就可以模組化的。

事情的開始

這個狀況是一開始跟其他同事在專案內都有使用到一個 input 檔案按鈕,它的效果是立即上傳圖片,同時在頁面上顯示圖片預覽。在一開始我有先提出說這顆按鈕或許可以先做成共用元件,這樣其他人就可以引入使用。後來其實發生了蠻多的狀況,所以後來又經過蠻多次調整的,不過整體來說,這段過程讓我學習到蠻多經驗的

設計模組前

需要先考慮到以下問題:

  1. 模組夠不夠獨立?
  2. 模組需要依賴什麼才能執行?
  3. 模組可以重複被引用嗎?
  4. 模組可以涵蓋到哪些的應用場景?

元件的使用方式

<head>
  <link rel="stylesheet" href="widget.css">
</head>
<body>
  <div id="widget"></div>

<script src="widget.js"></script>
<script>
  window.widgetName.config = {
    // set option...
  }
</script>
</body>

以上是大部分元件使用的寫法:

widget.css 是元件需要用到的樣式

div#widget 是元件在頁面中出現的所在位置,有的元件會使用固定的 id 名稱,有的可以自訂

widget.js 內部主要完成兩件事情:

  1. 生成動態元素 append 到 div#widget
  2. 在動態元素上掛事件監聽,完成跟元件互動操作的部分

額外設定會放在 widget.js 外面,通常會採用全域的方式寫入

其他實作可能略有差異,但大致上都是 html, css, js 的結合。如果有在寫 Vue 的話用 SFC (single file component) 會更方便一些。

心得

其實在一開始對於模組 (元件) 的責任範圍還不是很清楚的時候,比較難把模組寫進去。
可以先寫好功能再作封裝的動作,或者顛倒過來,先思考這個元件依賴的變因 (變數) 有哪些?然後再實作元件功能


上一篇
貳參。Laravel 的進階模式:service
下一篇
貳伍。我其實是不會寫程式的人
系列文
程式小萌新的學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言